package study_1;

/**
 * 线程的层次关系
 *      子线程与父线程：假设线程A所执行的代码创建了线程B，那么，习惯上我们称线程B为线程A的子线程，相应的线程A就被称为线程B的父线程。
 *      优先级：一个线程的优先级默认值为该父线程的优先级
 *      守护线程：一个线程是否是一个守护线程默认取决于其父线程；
 *              默认情况下，父线程是守护线程，则子线程也是守护线程；
 *              父线程是用户线程，则子线程也是用户线程，
 *              另外，父线程在创建子线程后启动子线程之前，可以调用该线程的setDaemon方法，
 *              将相应的线程设置为守护线程（或者用户线程）。
 */
public class Thread7 {
    public static void main(String[] args) {
        TestThread testThread = new TestThread();
        Thread.currentThread().setPriority(10);
        Thread thread = new Thread(testThread);
        Thread thread2 = new Thread(testThread);
        Thread.currentThread().setPriority(5);
        thread.setDaemon(true);
        thread2.setDaemon(true);
        thread.start();
        thread2.start();
        System.out.println(thread.getPriority());
        System.out.println(thread2.getPriority());
        System.out.println(Thread.currentThread().getPriority());
        System.out.println("--------------------------");
        System.out.println("我是主线程");
        System.out.println("--------------------------");
    }
    static class TestThread implements Runnable{
        @Override
        public void run() {
            for (int i = 0; i < 100; i++) {
                try {
                    Thread.sleep(2000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println(Thread.currentThread());
            }
        }
    }
}
